package com.saver.core.persistence;

import com.saver.core.persistence.table.BancoTable;
import com.saver.core.persistence.table.CategoriaEquivTable;
import com.saver.core.persistence.table.EstablecimientoEquivTable;
import com.saver.core.persistence.table.MonedaEquivTable;
import com.saver.core.persistence.table.MonedaTable;
import com.saver.core.persistence.table.ParametroTable;
import com.saver.core.persistence.table.TransaccionTable;
import com.saver.core.util.Constantes;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DatabaseHelper extends SQLiteOpenHelper {
	// Logcat tag
    private static final String CLASE = DatabaseHelper.class.getName();
 

	public DatabaseHelper(Context context, String name, CursorFactory factory,
			int version) {
		super(context, Constantes.DATABASE_NAME, null, Constantes.DATABASE_VERSION);
	}

	@Override
	public void onCreate(SQLiteDatabase db) {
		BancoTable bancoTable = new BancoTable();
		bancoTable.onCreate(db);
		
		TransaccionTable transaccionTable = new TransaccionTable();
		transaccionTable.onCreate(db);
		
		MonedaTable monedaTable = new MonedaTable();
		monedaTable.onCreate(db);
		
		MonedaEquivTable monedaEquivTable = new MonedaEquivTable();
		monedaEquivTable.onCreate(db);
		
		CategoriaEquivTable categoriaEquivTable = new CategoriaEquivTable();
		categoriaEquivTable.onCreate(db);
		
		EstablecimientoEquivTable establecimientoEquivTable = new EstablecimientoEquivTable();
		establecimientoEquivTable.onCreate(db);
		
		ParametroTable parametroTable = new ParametroTable();
		parametroTable.onCreate(db);
		
		onCreateCategorias(db);
		onCreateEstablecimiento(db);
		onCreateParametros(db);
		//onCreateTransaciones(db);
		//onCreateEstablecimientoEquiv(db);
	}
	
	public void onCreateParametros(SQLiteDatabase db) {
        Log.d(CLASE, "creando tabla Parametros");

        db.execSQL("CREATE TABLE PARAMETRO ("+
                "ID_PARAMETRO INTEGER PRIMARY KEY AUTOINCREMENT, "+
                "CODIGO INTEGER, "+
                "VALOR TEXT, "+
                "DESCRIPCION TEXT)");
        db.execSQL("INSERT INTO PARAMETRO(ID_PARAMETRO, CODIGO, VALOR, DESCRIPCION) VALUES(1,'FLAG_HISTORY_LOAD','0','INDICA SI SE REALIZO LA CARGA DEL HISTORIAL')");
        Log.i(CLASE, "tabla parametros creada");

    }
	
	public void onCreateEstablecimiento(SQLiteDatabase db) {
		Log.d(CLASE, "creando tabla establecimientos");
		
		db.execSQL("CREATE TABLE ESTABLECIMIENTOS ("+
                "ID_ESTABLECIMIENTO INTEGER PRIMARY KEY AUTOINCREMENT, "+
                "ID_CATEGORIA INTEGER, "+
                "ID_SERVIDOR INTEGER, "+
                "NOMBRE TEXT)");
		
		Log.i(CLASE, "tabla establecimientos creada");
	}
	
	public void onCreateCategorias(SQLiteDatabase db) {
		Log.d(CLASE, "creando tabla categorias");
		
		db.execSQL("CREATE TABLE CATEGORIAS ("+
                "ID_CATEGORIA INTEGER PRIMARY KEY, " +
                "NOMBRE TEXT,"+
                "ICONO TEXT," +
                "COLOR TEXT)");
		
		db.execSQL("INSERT INTO CATEGORIAS(ID_CATEGORIA, NOMBRE, ICONO, COLOR) VALUES(1,'Sin Categorizar', 'otros','217,80,138')");
		db.execSQL("INSERT INTO CATEGORIAS(ID_CATEGORIA, NOMBRE, ICONO, COLOR) VALUES(2,'Alimentaci\u00F3n', 'alimentacion','254,149,7')");
		db.execSQL("INSERT INTO CATEGORIAS(ID_CATEGORIA, NOMBRE, ICONO, COLOR) VALUES(3,'Salud', 'salud', '51,181,229')");
		db.execSQL("INSERT INTO CATEGORIAS(ID_CATEGORIA, NOMBRE, ICONO, COLOR) VALUES(4,'Tecnolog\u00EDa', 'tecnologia','106,167,134')");
		db.execSQL("INSERT INTO CATEGORIAS(ID_CATEGORIA, NOMBRE, ICONO, COLOR) VALUES(5,'Transferencias', 'transferencias','53,194,209')");
		db.execSQL("INSERT INTO CATEGORIAS(ID_CATEGORIA, NOMBRE, ICONO, COLOR) VALUES(6,'Retiro de Efectivo', 'disp_efectivo','33,228,121')");
		db.execSQL("INSERT INTO CATEGORIAS(ID_CATEGORIA, NOMBRE, ICONO, COLOR) VALUES(7,'Entretenimiento', 'entretenimiento','252,231,5')");
		db.execSQL("INSERT INTO CATEGORIAS(ID_CATEGORIA, NOMBRE, ICONO, COLOR) VALUES(8,'Transporte', 'transporte','255,208,140')");
		db.execSQL("INSERT INTO CATEGORIAS(ID_CATEGORIA, NOMBRE, ICONO, COLOR) VALUES(9,'Vestir', 'vestir','140,234,255')");
		db.execSQL("INSERT INTO CATEGORIAS(ID_CATEGORIA, NOMBRE, ICONO, COLOR) VALUES(10,'Educaci\u00F3n', 'educacion','255,140,157')");
		db.execSQL("INSERT INTO CATEGORIAS(ID_CATEGORIA, NOMBRE, ICONO, COLOR) VALUES(11,'Pago de Servicios', 'servicios','102,153,0')");
		
		Log.i(CLASE, "tabla categorias creada");
	}

	@Override
	public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
	}

}
